/**
 * 同构应用通用的启动入口
 */
import Vue from 'vue';
import App from './App.vue';
import { createRouter } from './router/index';
import { createStore } from './store/index';
import VueMeta from 'vue-meta';

Vue.use(VueMeta);
Vue.mixin({
  metaInfo: {
    titleTemplate: `%s - 蓝胖`,
  }
})

// 导出一个工厂函数，用户创建新的
// 应用程序、router 和 store 实例 
// 为的是防止交叉请求带来的状态污染
// 每一个请求返回的vue实例都是通过函数生成的 这样作用域是独立的
export function createApp() {
  const router = createRouter();
  const store = createStore();
  const app = new Vue({
    router,
    store,
    render: h => h(App)
  });
  return { app, router, store };
}